精通 Rust 需要从概念逻辑过渡到 词法精准。这一过程始于 附录——这是对该语言语法的正式映射。我们将字面量、注释和符号视为 Rust 代码的 原子 ,它们与所构建的逻辑截然不同。
1. 字面量清单
Rust 通过专用字面量在编译器层面区分类型。虽然 "..." 用于处理标准字符串,但 原始字符串字面量 (r"...")通过忽略转义序列来避免"反斜杠泛滥"。对于底层数据, 字节字面量 (b"...")和 ASCII 字节字面量 提供直接的 u8 映射。
2. "空"空间的语义
空 单元类型 (())表示零元素元组,用于没有返回值的情况。与之相对, 空底类型 (!)表示永不返回的代码(发散函数)。 语句终止符 (;)是将产生值的表达式转变为语句的关键边界。
3. 文档即架构
注释不仅仅是注解,它们还是元数据。 外部文档注释 (///)用于文档化紧随其后的项,而 内部文档注释 (//!)则用于文档化它们所在的项(例如 crate 或模块根)。
main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>
QUESTION 1
Which literal type would you use to define a Windows file path without escaping backslashes?
String Literal (
"...")Raw String Literal (
r"...")Byte String Literal (
b"...")Character Literal (
'...')✅ Correct!
Raw string literals (r"...") treat backslashes as literal characters rather than escape triggers.❌ Incorrect
Standard string literals require double backslashes (\\) to represent a single path separator.QUESTION 2
What is the primary difference between
/// and //! in Rust?/// is for blocks, //! is for lines./// documents the next item; //! documents the containing item.//! is ignored by rustdoc.There is no difference.
✅ Correct!
//! is an 'inner' doc comment, typically used at the top of a file to document the module itself.❌ Incorrect
Rust distinguishes between documenting 'the thing after this' (outer) and 'the thing this is inside' (inner).QUESTION 3
What does the
! type (Empty Bottom Type) signify in a function signature?The function returns an error.
The function returns 0.
The function never returns (e.g., it loops forever or panics).
The function is deprecated.
✅ Correct!
The 'never' type ! indicates a diverging function that does not return to the caller.❌ Incorrect
A function that returns 'nothing' but completes successfully uses the unit type ().QUESTION 4
How does
255u8 differ from 255 in Rust?They are identical; suffixes are optional.
255u8 explicitly hints the type to the compiler as an 8-bit unsigned integer.255u8 is a string representation.255u8 is a pointer.✅ Correct!
Numeric suffixes like u8, i32, or f64 provide immediate type information, preventing ambiguity.❌ Incorrect
While Rust can often infer types, suffixes provide explicit control at the literal level.QUESTION 5
Which symbol serves as the 'Statement and Item Terminator' in Rust?
Colon (
:)Comma (
,)Semicolon (
;)Period (
.)✅ Correct!
The semicolon ; terminates a statement, often suppressing the return value of the preceding expression.❌ Incorrect
The semicolon is a core structural symbol defined in Table B-2 of the Rust reference.Lexical Architecture Case Study
Navigating the Reference to Resolve Syntax Ambiguity
A developer is writing a regex engine crate. They need to include long regex patterns containing many special characters, document the crate's internal modules, and ensure their constants are sized correctly for performance.
Q
1. Which literal and comment syntax should be used at the top of 'lib.rs' to describe the regex engine's architecture?
Solution:
The developer should use Inner Doc Comments (
The developer should use Inner Doc Comments (
//!) at the top of the file and Raw String Literals (r"...") for the regex patterns to avoid manual escaping of regex metacharacters.Q
2. If a function in the engine is designed to stop execution and 'panic' on invalid input, what return type should the reference suggest?
Solution:
The function should use the Empty Bottom Type (
The function should use the Empty Bottom Type (
!), as it diverges and never returns control to the caller.Q
3. To ensure a constant representing a mask is exactly 16 bits, which numeric literal suffix is appropriate?
Solution:
The
The
u16 (or i16) suffix should be appended to the literal, e.g., 0b1010u16.